komarik
Newbie
Рейтинг читателей: 0
Сообщений: 19
|
 |
« : Сентября 10, 2009, 02:45:55 am » |
|
Собсно интересует, я один думаю не так, как думают создатели теста или нет =)
|
|
|
|
|
Записан
|
|
|
|
Alexei Rylov
Newbie
Рейтинг читателей: 0
Сообщений: 2
|
 |
« Ответ #1 : Сентября 10, 2009, 09:13:34 am » |
|
А как думают создатели теста? Что за тест? И какой ответ является правильным "с научной точки зрения"? 
|
|
|
|
|
Записан
|
-------------------------- Что ещё за подпись? о_0
|
|
|
Galogen
Member of CAR
Hero Member
 
Рейтинг читателей: 61
Сообщений: 4021
Аксакал
|
 |
« Ответ #2 : Сентября 10, 2009, 10:14:40 am » |
|
Я ответил композиция. Хотя как мы понимаем и композиция тут не подходит. Может быть полиморфизм? Да наверное полиморфизм. Почему не наследование. Сущность - птица - имеет ряд свойств, в том числе умение летать Сущность - ящерица - имеет ряд свойств, в том числе умение ползать. Дракон - берет часть свойств птицы (крылья, умение летать) и ящерицы (4 ноги, плоское брюхо, умение ползать) Однако - дракон - это не птица, хотя близко к ящерице. Может быть это ящерица, обладающая частью свойств птицы (реализующая интерфейс птицы), т.е. на самом деле мне кажется тут вообще нет корректного ответа Если пойти от биологии, то вероятно - птица - это динозавр, но вот ящерица - далеко не факт, скорее пресмыкающее. Тогда мы можем выстроить другую цепочку: Дракон - это птица - это динозавр, тогда как бы ползать он как ящерица не может, так как у динозавров совершенно другое строение 
|
|
|
|
|
Записан
|
Эдуард aka galogen
|
|
|
greesha
Member of CAR
Hero Member
 
Рейтинг читателей: 23
Сообщений: 922
|
 |
« Ответ #3 : Сентября 10, 2009, 11:20:43 am » |
|
Это работодатели такие тесты раздают, что ли?
|
|
|
|
|
Записан
|
greesha.ruжежешечкаРеальность - это убийство прекрасной теории бандой мерзких фактов. (Роберт Гласс)
|
|
|
komarik
Newbie
Рейтинг читателей: 0
Сообщений: 19
|
 |
« Ответ #4 : Сентября 10, 2009, 11:27:37 am » |
|
"Правильный" ответ - множественное наследование. Как я понял, логика примерно такая: класс "Летун"; класс "Ползун"; класс Птица : "Летун"; класс Ящерица : "Ползун"; класс Дракон : "Леутн", "Ползун"; Мой ответ: Композиция класс УмениеЛетать; класс УмениеПолзать; Класс Дракон { УмениеЛетать УмениеПолзать } Как по мне, данный вариант подходит больше, чем вариант с наследованием, учитывая то, как задан вопрос. Это работодатели такие тесты раздают, что ли?
нет, это просто тесты - http://www.quizful.net/test/oop_basics.
|
|
|
|
|
Записан
|
|
|
|
greesha
Member of CAR
Hero Member
 
Рейтинг читателей: 23
Сообщений: 922
|
 |
« Ответ #5 : Сентября 10, 2009, 11:35:13 am » |
|
Мне тоже множественное наследование не нравится. Если решать задачу в лоб, то полученная модель искажает реальность: драконы не являются птицами, а абстрактные классы летунов и ползунов сразу сильно усложняют модель.
Но вообще, такие задачи нельзя решать в отрыве от контекста.
|
|
|
|
|
Записан
|
greesha.ruжежешечкаРеальность - это убийство прекрасной теории бандой мерзких фактов. (Роберт Гласс)
|
|
|
Бабихин Максим
Jr. Member

Рейтинг читателей: 1
Сообщений: 81
|
 |
« Ответ #6 : Сентября 10, 2009, 12:05:43 pm » |
|
На мой взгляд все зависит от конкретной реализации...Можно представить, что дракон появился от скрещивания птицы и ящера, тогда одно решение. А можно представить, что это вообще отдельное создание, тогда рожденный ползать летать не может. У задачи просто не может быть правильного ответа.
|
|
|
|
« Последнее редактирование: Сентября 10, 2009, 12:07:42 pm от Babikhin M. »
|
Записан
|
|
|
|
javenue
Newbie
Рейтинг читателей: 0
Сообщений: 9
|
 |
« Ответ #7 : Сентября 10, 2009, 12:50:30 pm » |
|
Интересно, почему некоторые думают, что наследование - это только "is-a"? На сколько я понимаю, птица и ящерица приведены как пример.
В вопросе явно указаны слова "летать" и "ползать" - это поведение. То есть некие классы (или интерфейсы) - не важно как их назвать (CanFly, Flyable, FlyAware) наделяют дракона новым поведением. Это наследование. А так как есть 2 таких поведения, то это множественное наследование.
Кстати, композиция не совсем подходит, так как композиция описывает жестку связь между двумя объектами, а умение летать не является частью дракона. Может еще с натяжкой можно указать агрегацию, но такого варианта в ответах нет. Кроме того, для агрегации и композиции ООП не нужно. Можно в Си на структурах их реализовать, ну или на джаваскрипте запихнуть объект в объект.
Полиморфизм имеет смысл когда мы говорим о полиморфном поведении. То есть если бы задача стояла работать с птицей и драконом одинаковым образом (запускать их с балкона что ли), то полиморфизм бы подошел.
Учитывая, что нужно выбрать наиболее подходящий вариант, подходит именно множественное наследование.
|
|
|
|
|
Записан
|
|
|
|
Ontology Nazi
Member of CAR
Hero Member
 
Рейтинг читателей: 19
Сообщений: 1200
Hero of Math and Logic
|
 |
« Ответ #8 : Сентября 10, 2009, 01:10:08 pm » |
|
боже мой, какая херня
|
|
|
|
|
Записан
|
|
|
|
komarik
Newbie
Рейтинг читателей: 0
Сообщений: 19
|
 |
« Ответ #9 : Сентября 10, 2009, 01:19:22 pm » |
|
боже мой, какая херня
четко и многозначительно одновременно =) это ответ на какой пост? (хотя интуитивно догадываюсь)
|
|
|
|
|
Записан
|
|
|
|
Galogen
Member of CAR
Hero Member
 
Рейтинг читателей: 61
Сообщений: 4021
Аксакал
|
 |
« Ответ #10 : Сентября 10, 2009, 01:20:27 pm » |
|
Интересно, почему некоторые думают, что наследование - это только "is-a"? На сколько я понимаю, птица и ящерица приведены как пример.
А что может быть еще? Учитывая, что нужно выбрать наиболее подходящий вариант, подходит именно множественное наследование.
Если поступать формально - да множественное наследование. Дракон это и птица, и ящерица. А если вспомнить легенду, то и человек, так как умеет говорить и мыслить  Возможны Вы правы в своих рассуждениях. Особенно если не принимать глубокий смысл задания 
|
|
|
|
|
Записан
|
Эдуард aka galogen
|
|
|
javenue
Newbie
Рейтинг читателей: 0
Сообщений: 9
|
 |
« Ответ #11 : Сентября 10, 2009, 01:29:24 pm » |
|
Советую почитать о наследовании и о том, что кроме наследования реализации есть еще и наследование интерфейса (API). Что то типа такого получается: class Flyable { public: virtual void fly(); }; class Dragon : Flyable { public: void fly() { ... } };
|
|
|
|
|
Записан
|
|
|
|
ida
Sr. Member
  
Рейтинг читателей: 15
Сообщений: 371
I dont speak english
|
 |
« Ответ #12 : Сентября 10, 2009, 03:34:51 pm » |
|
Выбрала множественное наследование, но я себе слабо представляю полиморфизм. Первые два точно нет. Насчет композиции - может быть в этом каверзность вопроса, но я бы сказала, что это вариант, который может подойти после дополнительных вопросов (ибо для каких целей будут использоваться методы летать и ползать, неясно). Именно в такой постановке - нет.
Вообще от тестовых заданий конечно порой хочется стучаться лбом о стену. А от того, что их воспринимают всерьез те, кто проводит собеседования - и еще кое по чему постучать.
В-частности, возможно, это хороший способ оценить программиста, но для аналитика - человека, чьей ключевой задачей является взаимодействие - просто немыслимо дать ожидаемый ответ. И получается, что оценивается не твоя способность к взаимодействию, а то, угадал ты, что хотел сказать автор теста (видя обоих впервые), или нет.
|
|
|
|
« Последнее редактирование: Сентября 10, 2009, 05:59:26 pm от ida »
|
Записан
|
|
|
|
Виталий Григораш
Member of CAR
Hero Member
 
Рейтинг читателей: 12
Сообщений: 510
|
 |
« Ответ #13 : Сентября 10, 2009, 05:47:36 pm » |
|
Вся страна играет в угадайку. И сюда добрались 
|
|
|
|
|
Записан
|
Если вы не знаете куда идете, то вы вряд ли туда дойдете [Форест Гамп] www.grigorash.ru
|
|
|
alec7777
Newbie
Рейтинг читателей: 0
Сообщений: 1
|
 |
« Ответ #14 : Сентября 10, 2009, 05:55:27 pm » |
|
Я бы выбирал между наследованием и композицией, зависит от языка реализации.
Например при реализации на Javа пришлось бы реализовавать как композицию. Но никак не полиморфизм.
О и как следствие, композиция более общий случай, правильный вариант (IMXO) композиция.
|
|
|
|
|
Записан
|
|
|
|
|